# 2021年1月16日 上午10:54 周考模拟
# 人工智能学院1906A
# 裴云鹏


# 通过键盘输入号码，实现手选双色球彩票系统的设计。


red_balls = set()  # 红球容器
blue_ball = None  # 蓝球变量
multiple = 1  # 注数变量


def get_int(prompt):
    '''
    由控制太输入一个整数
    :param prompt:
        提示字符串
    :return:
        如果用户的输入可以转为整数，则返回转换后的整数
        否则，为None
    '''
    try:
        n = int(input(prompt).strip())
        return n
    except ValueError:
        return None


print('手选双色球：')

# 手选红球
red_cnt = 6  # 红球个数
max_red = 33   # 红球最大号码
print('请选择{}个红球: '.format(red_cnt))
while True:
    red_len = len(red_balls)
    if red_len > 0:  # 展示
        print('您已选红球如下：')
        print(', '.join([str(i) for i in sorted(red_balls)]))
        if red_len >= red_cnt:
            break
    n = get_int('请选择1-{}之间的一个数字：'.format(max_red))
    if n is None or not(1 <= n <= max_red):
        print('输入有误，请重新输入！')
        continue
    red_balls.add(n)  # 放入容器

# 手选蓝球
max_blue = 16  # 蓝球的最大号码
while True:
    n = get_int('请输入1-16的蓝球号码: ')
    if n is None or not(1 <= n <= max_blue):
        print('输入有误，请重新输入！')
        continue
    blue_ball = n  # 记录用户指定的蓝球号码
    break

# 指定注数
while True:
    n = get_int('请输入要购买的注数: ')
    if n is None or n < 1:
        print('输入有误，请重新输入！')
        continue
    multiple = n  # 记录用户指定的蓝球号码
    break

# 输出
print('''\
您已经购买如下双色球：
    红球：{}
    蓝球：{}
    注数：{}
'''.format(', '.join([str(i) for i in sorted(red_balls)]), blue_ball, multiple))
